package 算法API综合练习;

public class 爬楼梯问题 {
    public static void main(String[] args) {
        /* 一共20成台阶，每次只能怕一阶或者两阶，一共有多少种爬法？
         */
        /*逆向分析：在第19层-20层：1种爬法
                  在第18层-20层：也只有一种爬法--->直接爬两阶到20层
                                因为一阶一阶的爬到19阶的时候在爬第19阶的时候就已经算过这种爬法了.
                   在17-20层:
           运算结果:
           一层台阶     1种爬法
           2层台阶     2种爬法
           7层台阶     21种爬法
           总共4个台阶:3-4--->1
                     2--4--=3-4的爬法加上2-4的爬法=1+1=2
                     1--4---3--4+2--4+1--4既在第一层的时候有2种爬法,爬一层到第2层爬2层到第3阶
                     再第2阶的时候前面已经计算过了,只需要加上,再第2层的爬法数,同理再第3层只需要加上再第三层的爬法.

                    总上所述:再没一层的爬法只需要加上前面的爬法数.
         */
        System.out.println(stil(20));
        //创建爬楼梯的递归方法
    }
    public static int stil(int n){
        // 如果只有一层n=1
        if (n==1){
            return 1;
        }
        if (n==2){
            return 2;
        }
        return stil(n-1)+stil(n-2);

    }
}
